<?php

class SON_Forms_Candidato extends Zend_Form
{
    public function init()
    {
        $this->setMethod('post');
        
        $id = new Zend_Form_Element_Hidden('id');
        $id->addFilter('Int');
        $this->addElement($id);
    
        $foto = new Zend_Form_Element_File('foto');
        $foto->setRequired(false)
	        ->setDestination('fotos/')
	        ->setValueDisabled(true)
	        ->addValidator('Extension', true, array('jpg,png,gif', 'messages' => 'Extensões permitidas: jpg, png, gif'))
	        ->addValidator('Size', true, array('100kB', 'messages' => 'Tamanho máximo permitido: 100kB'))
	        ->addValidator('Count', true, 1)
        	->setAttrib('class', 'form-control');
        $this->addElement($foto);
        
        $sequencial = new Zend_Form_Element_Text('sequencial');
        $sequencial->setRequired(true)
	        ->addFilter('StripTags')
	        ->addFilter('StringTrim')
	        ->addValidator('NotEmpty', true, array('messages' => 'Informe um número sequencial'))
	        ->setAttrib('class', 'form-control')
	        ->setAttrib('placeholder', 'Número Sequencial')
        	->setAttrib('required', 'required');
        $this->addElement($sequencial);
        
        $politico_id = new Zend_Form_Element_Hidden('politico_id');
        $politico_id->setRequired(true)
	        ->addValidator('NotEmpty', true, array('messages' => 'Informe um político'))
	        ->setAttrib('class', 'form-control');
        $this->addElement($politico_id);
        
        $politico_nome = new Zend_Form_Element_Text('politico_nome');
        $politico_nome->setAttrib('autocomplete', 'off')
	        ->setAttrib('class', 'form-control')
	        ->setAttrib('placeholder', 'Político')
	        ->setAttrib('required', 'required');
        $this->addElement($politico_nome);
        
        $numero = new Zend_Form_Element_Text('numero');
        $numero->setRequired(true)
	        ->addFilter('StripTags')
	        ->addFilter('StringTrim')
	        ->addValidator('NotEmpty', true, array('messages' => 'Informe um número'))
	        ->setAttrib('class', 'form-control')
	        ->setAttrib('placeholder', 'Número')
        	->setAttrib('required', 'required');
        $this->addElement($numero);
        
        $nome = new Zend_Form_Element_Text('nome');
        $nome->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty', true, array('messages' => 'Informe um nome'))
            ->setAttrib('class', 'form-control')
            ->setAttrib('placeholder', 'Nome')
        	->setAttrib('required', 'required');
        $this->addElement($nome);
        
        $eleicao = new Eleicao();
        $options = array('' => '-- Selecione --') + $eleicao->fetchPairs();
        $eleicao = new Zend_Form_Element_Select('eleicao_id');
        $eleicao->setRequired(true)
	        ->addValidator('NotEmpty', true, array('messages' => 'Informe uma eleição'))
	        ->setAttrib('class', 'form-control')
        	->setMultiOptions($options)
        	->setAttrib('required', 'required');
        $this->addElement($eleicao);
        
        $cargo = new Cargo();
        $options = array('' => '-- Selecione --') + $cargo->fetchPairs();
        $cargo = new Zend_Form_Element_Select('cargo_id');
        $cargo->setRequired(true)
	        ->addValidator('NotEmpty', true, array('messages' => 'Informe um cargo'))
	        ->setAttrib('class', 'form-control')
	        ->setMultiOptions($options)
        	->setAttrib('required', 'required');
        $this->addElement($cargo);
        
        $partido = new Partido();
        $options = array('' => '-- Selecione --') + $partido->fetchPairs();
        $partido = new Zend_Form_Element_Select('partido_id');
        $partido->setRequired(true)
	        ->addValidator('NotEmpty', true, array('messages' => 'Informe um partido'))
	        ->setAttrib('class', 'form-control')
	        ->setMultiOptions($options)
        	->setAttrib('required', 'required');
        $this->addElement($partido);
        
        $coligacao = new Coligacao();
        $options = array('' => '-- Selecione --') + $coligacao->fetchPairs();
        $coligacao = new Zend_Form_Element_Select('coligacao_id');
        $coligacao->setRequired(false)
	        ->setAttrib('class', 'form-control')
	        ->setMultiOptions($options);
        $this->addElement($coligacao);
        
        $estado = new Estado();
        $options = array('' => '-- Selecione --') + $estado->fetchPairs();
        $estado = new Zend_Form_Element_Select('estado_id');
        $estado->setRequired(false)
	        ->setAttrib('class', 'form-control')
	        ->setMultiOptions($options);
        $this->addElement($estado);
        
        $cidade = new Cidade();
        $options = array('' => '-- Selecione --') + $cidade->fetchPairs();
        $cidade = new Zend_Form_Element_Select('cidade_id');
        $cidade->setRequired(false)
	        ->setAttrib('class', 'form-control')
	        ->setMultiOptions($options);
        $this->addElement($cidade);
        
        $situacao = new Situacao();
        $options = array('' => '-- Selecione --') + $situacao->fetchPairs();
        $situacao = new Zend_Form_Element_Select('situacao_id');
        $situacao->setRequired(true)
	        ->addValidator('NotEmpty', true, array('messages' => 'Informe uma situação'))
	        ->setAttrib('class', 'form-control')
	        ->setMultiOptions($options)
        	->setAttrib('required', 'required');
        $this->addElement($situacao);
        
        $resultado = new Resultado();
        $options = array('' => '-- Selecione --') + $resultado->fetchPairs();
        $resultado = new Zend_Form_Element_Select('resultado_id');
        $resultado->setRequired(true)
	        ->addValidator('NotEmpty', true, array('messages' => 'Informe um resultado'))
	        ->setAttrib('class', 'form-control')
	        ->setMultiOptions($options)
        	->setAttrib('required', 'required');
        $this->addElement($resultado);
    
        $id->removeDecorator('HtmlTag')->removeDecorator('Label')->removeDecorator('Errors');
        $foto->removeDecorator('HtmlTag')->removeDecorator('Label')->removeDecorator('Errors');
        $sequencial->removeDecorator('HtmlTag')->removeDecorator('Label')->removeDecorator('Errors');
        $numero->removeDecorator('HtmlTag')->removeDecorator('Label')->removeDecorator('Errors');
        $nome->removeDecorator('HtmlTag')->removeDecorator('Label')->removeDecorator('Errors');
        $eleicao->removeDecorator('HtmlTag')->removeDecorator('Label')->removeDecorator('Errors');
        $cargo->removeDecorator('HtmlTag')->removeDecorator('Label')->removeDecorator('Errors');
        $partido->removeDecorator('HtmlTag')->removeDecorator('Label')->removeDecorator('Errors');
        $politico_id->removeDecorator('HtmlTag')->removeDecorator('Label')->removeDecorator('Errors');
        $politico_nome->removeDecorator('HtmlTag')->removeDecorator('Label')->removeDecorator('Errors');
        $coligacao->removeDecorator('HtmlTag')->removeDecorator('Label')->removeDecorator('Errors');
        $estado->removeDecorator('HtmlTag')->removeDecorator('Label')->removeDecorator('Errors');
        $cidade->removeDecorator('HtmlTag')->removeDecorator('Label')->removeDecorator('Errors');
        $situacao->removeDecorator('HtmlTag')->removeDecorator('Label')->removeDecorator('Errors');
        $resultado->removeDecorator('HtmlTag')->removeDecorator('Label')->removeDecorator('Errors');
    }
    
    public function setAsEditForm(array $data)
    {
        $this->populate($data);
        
        $this->getElement('politico_id')
        	->setValue($data['politico_id']['id']);
        
        $this->getElement('politico_nome')
        	->setValue($data['politico_id']['nome']);
        
        return $this;
    }
}